#include "../headers/main.h"
#include "../headers/forces_symboliques.h"
#include "../headers/probabilites.h"
#include "../headers/ihm.h"
#include "../headers/generation.h"



void calculerProba(char etape) {
    clock_t begin, step;
    double time_spent;

    begin = clock();
    
    
    unsigned int nb_forces = 0;
    unsigned long i;
    
    //On génére un jeu comprenant toutes les cartes - les cartes connues (nos cartes + le board)
    char* jeu = generationJeu(getNbCartesConnues(etape),ma_carte1,ma_carte2,board_carte1,board_carte2,board_carte3,board_carte4,board_carte5);
    
    step = clock();
    printf("Jeu genere : %lf\n",(double)(step - begin) / CLOCKS_PER_SEC);
    
    char** futurs_adversaires;
    if (etape == PREFLOP) {
        //On ne peut pas générer des mains à 7 cartes pour le préflop : trop de RAM
        futurs_adversaires = generationMains5cartes(jeu);
    }
    else {
        //On génére tous les futurs possibles à 7 cartes pour l'adversaire (ne comprenant pas nos deux cartes)
        futurs_adversaires = generationMains7cartes(jeu,(getNbCartesConnues(etape)-2),board_carte1,board_carte2,board_carte3,board_carte4,board_carte5);
    }
    step = clock();
    printf("Futurs adversaires : %lf\n",(double)(step - begin) / CLOCKS_PER_SEC);
    
    //On génère nos futurs = tous les futurs possibles à 7 cartes
    //char** nos_futurs = generationMains7cartes(jeu,getNbCartesConnues(etape),ma_carte1,ma_carte2,board_carte1,board_carte2,board_carte3,board_carte4,board_carte5);
    Puissance** nos_futurs = generationFuturesPuissances(jeu,getNbCartesConnues(etape),ma_carte1,ma_carte2,board_carte1,board_carte2,board_carte3,board_carte4,board_carte5);
    step = clock();
    printf("Nos futurs : %lf\n",(double)(step - begin) / CLOCKS_PER_SEC);
    exit(0);
   /*
    //Génération des forces symboliques, associées au nombre de main qui l'ont
    Forces** distribution_forces = generationForces(futurs_adversaires,&nb_forces);
    step = clock();
    printf("Forces : %lf\n",(double)(step - begin) / CLOCKS_PER_SEC);
    

    double total_proba=0.0;
    unsigned long long puissance_main_etudiee;
    int force_numerique_etudiee;
    char* force_symbolique = malloc(sizeof(char) * 7);
    
    char* force_board = malloc(sizeof(char) * 7);
    char* board = malloc(6*sizeof(char));
    int j;
   
    for (i=0;nos_futurs[i] != NULL;i++) {        
        for (j=2;j<=6;j++) { board[j-2] = nos_futurs[i][j]; }
        
        getForceSymbolique(board,force_board);
        
        force_numerique_etudiee = (nb_forces-1);
        getForceSymbolique(nos_futurs[i],force_symbolique);
        if (getPuissanceForce(force_board) == getPuissanceForce(force_symbolique)) { continue; }
        
        puissance_main_etudiee = getPuissanceForce(force_symbolique);
        
        while ((getPuissanceForce(distribution_forces[force_numerique_etudiee]->force_symbolique) < puissance_main_etudiee) && (force_numerique_etudiee > 0)) {
            force_numerique_etudiee--;
        }
        total_proba += distribution_forces[force_numerique_etudiee]->proba;
        
    }

    step = clock();
    printf("Probas : %lf\n",(double)(step - begin) / CLOCKS_PER_SEC);
    total_proba /= (double)i;
    afficherProba(etape,total_proba);
    free(force_symbolique);
  */  
}
